﻿/********************************************************************************************************
Gestiona los taborder de los campos de texto y comprueba los focos y sus textos por defecto
cada vez que un campo recoje el foco
// Uso:
import es.yporqueno.utils.FocoFormularios;

var formu:FocoFormularios = new FocoFormularios(campos_array);

// Aniado cada uno de los campos de texto con su texto por defecto (opcional)
formu.addCampo(campoNombre_txt, "Nombre");
formu.addCampo(campoApellidos_txt, "Apellidos");
formu.addCampo(campoEmail_txt, "Email");

********************************************************************************************************/
package es.yporqueno.utils{

	import flash.events.FocusEvent;
	import flash.text.TextField;

	public class FocoFormularios {

		private var _campos_array:Array;
		private var _numCampos:uint;

		public function FocoFormularios() {
			_campos_array = new Array();
			_numCampos = 0;
		}
		
		// Aniado un nuevo campo al formulario.
		// Asigno los EventListener seteo el campo de texto, y le pongo un orden de tabulación
		public function addCampo(campo:TextField, textoPorDefecto:String="", maxChars:uint=0, restringir:String=null):void{
			campo.addEventListener(FocusEvent.FOCUS_IN, focoIn);
			campo.addEventListener(FocusEvent.FOCUS_OUT, focoOut);
			
			campo.text = textoPorDefecto;
			campo.maxChars = maxChars;
			campo.restrict = restringir;
			campo.tabEnabled = true;
			campo.tabIndex = _numCampos+1;
			
			_campos_array.push({campo:campo, textoPorDefecto:textoPorDefecto});
			_numCampos++;
		}
		
		// Comprueba si los campos de texto
		public function validar():Boolean{
			
		}
		
		// Limpio el campo de texto pulsado si tiene el texto predeterminado
		private function focoIn(evento:FocusEvent):void {
			var campoNuevo:TextField = TextField(evento.currentTarget);
			var n:uint= buscar(campoNuevo);
			if (campoNuevo.text == _campos_array[n].textoPorDefecto) {
				campoNuevo.text = "";
			}
		}
		
		// Al perder el foco un campo de texto, si no se ha escrito nada en él, pongo el texto por defecto
		private function focoOut(evento:FocusEvent):void {
			var campoViejo:TextField = TextField(evento.currentTarget);
			var n:uint= buscar(campoViejo);
			if (campoViejo.text == "") {
				campoViejo.text = _campos_array[n].textoPorDefecto;
			}
		}
		
		// Devuelve el índice de la matriz de campos que corresponda con el TextField proporcionado
		private function buscar(campo:TextField):uint {
			var index:uint=0;
			for (var i:uint = 0; i<_campos_array.length; i++) {
				if (_campos_array[i].campo == campo) {
					index = i;
					break;
				}
			}
			return index;
		}
	}
}